#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>
#include <assert.h>
#include<string.h>
//int My_strlen( const char* arr)
//{
//	const char* ret = arr;
//	assert(arr);
//	int num = 0;
//	while (*arr)
//	{
//		arr++;
//		num++;
//	}
//	return num;
// }
//int My_strlen(char* arr)
//{
//	if (*arr != '\0')
//	{
//		return 1 + My_strlen(arr + 1);
//	}
//	else return 0;
//}

//int My_strlen(char* arr)
//{
//	char* ret = arr;
//	while (*arr)
//	{
//		arr++;
//	}
//	return arr - ret;
//}

//int main()
//{
//	char arr[] = "asdsad";
//	int num = My_strlen(arr);
//	int num2 = strlen(arr);
//	printf("%d %d\n",num,num2);
//	return 0;
//}

//void My_strcpy(char* arr1,const char* arr2)
//{
//	assert(arr2);
//	while (*arr1++ = *arr2++)
//	{
//		;
//	}
//}
//
//int main()
//{
//	char arr1[20] = { 0 };
//	char arr2[] = "abcdef";
//	My_strcpy(arr1, arr2);
//	printf("%s\n",arr1);
//
//	return 0;
//}

//int My_strcmp(const char* arr1, const char* arr2)
//{
//	assert(arr1 && arr2);
//	while (*arr1 == *arr2)
//	{
//		if (*arr1 == '\0')
//		{
//			return 0;
//		}
//		arr1++;
//		arr2++;
//	}
//	if (*arr1 > arr2)
//		return 1;
//	else
//		return -1;
//}
//
//int main()
//{
//	char arr1[] = "abcd";
//	char arr2[] = "abcd";
//	printf("%d\n",strcmp(arr1,arr2));
////	printf("%d\n", My_strcmp(arr1, arr2));
////
//
//
//
//	return 0;
//}

//void My_strcat(char* arr1, const char* arr2)
//{
//	assert(arr2);
//	while (*arr1)
//	{
//		arr1++;
//	}
//	while (*arr1++ = *arr2++)
//	{
//		;
//	}
//
//}
//
//
//int main()
//{
//	char arr1[20] = "abcd";
//	char arr2[] = "ef";
//	My_strcat(arr1, arr2);
//	printf("%s\n", arr1);
//	return 0;
//}




char* my_strstr(const char* str1, const char* str2)
{
	assert(str1 && str2);
	if (*str2 == '\0')
	{
		return (char*)str1;
	}
	const char* s1 = NULL;
	const char* s2 = NULL;
	const char* cp = str1;

	while (*cp)
	{
		s1 = cp;
		s2 = str2;
		while (*s1 !='\0' && *s2!='\0' && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return (char*)cp;
		}
		cp++;
	}

	return NULL;
}